#include "sql_list.h"


// 初始化顺序表
int sql_list_init(UDP_client_sql ** list)
{
    // 动态空间 顺序表结构
    *list = (UDP_client_sql *)malloc(sizeof(UDP_client_sql));

    if (NULL == *list)
    {
        perror("malloc err");
        exit(-1);
    }
    
    // 动态空间 顺序表数据
    (*list)->data = (UDP_client_data *)malloc(sizeof(UDP_client_data) * USER_MAX);

    if (NULL == (*list)->data)
    {
        perror("malloc err");
        exit(-1);
    }

    // 初始化数值

    (*list)->len = 0;

    return 0;
}

// 插入
int sql_list_insert(UDP_client_sql * list ,  UDP_client_data data , int pos )
{
    if (NULL == list)
    {
        printf("NULL == list\n");
        return EOF;
    }
    if (USER_MAX <= list->len)
    {
        printf("USER_MAX >= list->len\n");
        return EOF;
    }
    
    // 只做尾差
    list->data[pos - 1] = data;
    
    list->len++;
    
}


// 删除
int sql_list_delete(UDP_client_sql * list , int pos )
{

}

// 查找   找到则 返回 用户的下标 没找到则 返回 -1
int sql_list_find(UDP_client_sql * list , UDP_client_data data )
{
    if (NULL == list)
    {
        printf("NULL == list\n");
        return EOF;
    }

    for (size_t i = 0; i < list->len; i++)
    {
        if (!sql_list_cmp(list->data[i] , data))
        {
            return i;
        }
    }

    return EOF;
}

// 修改
int sql_list_set_name(UDP_client_sql * list , int index , char * name)
{
    if (NULL == list)
    {
        printf("NULL == list\n");
        return EOF;
    }

    strcpy(list->data[index].name , name);

    return 0;
}



int sql_list_cmp(UDP_client_data D1 , UDP_client_data D2 )
{

    int flag = 0;


    // 判定IP
    if (D1.data.sin_addr.s_addr == D2.data.sin_addr.s_addr)
    {
        flag ++;
    }
    
    if (D1.data.sin_port == D2.data.sin_port)
    {
        flag ++;
    }
    

    if (flag == 2)
    {
        return 0;
    }
    

    return EOF;
    
}


